package com.zhang.family_doctor.mapper;

import com.zhang.family_doctor.entity.MemberFamily;
import com.zhang.family_doctor.entity.Resident;
import com.zhang.family_doctor.entity.ResidentHealth;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ResidentMapper {
    /**
     * 根据手机号查询居民
     * @param phone
     * @return
     */
    Resident getResidentByPhone(String phone);

    /**
     * 新增居民信息
     * @param resident
     */
    void register(Resident resident);

    /**
     * 修改居民信息
     * @param resident
     */
    void newFile(Resident resident);

    /**
     * 根据手机号修改密码
     * @param password
     * @param phone
     */
    void forgotPassword(@Param("password") String password, @Param("phone") String phone);

    /**
     * 更新或修改居民
     * @param resident
     */
    void completionOrUpdateResident(Resident resident);

    /**
     * 根据居民id查询该居民健康信息
     * @param residentId
     * @return
     */
    ResidentHealth getResidentHealthByResidentId(Integer residentId);

    /**
     * 插入居民健康信息
     * @param residentHealth
     */
    void saveResidentHealth(ResidentHealth residentHealth);

    /**
     * 根据id更新居民健康信息
     * @param residentHealth
     */
    void updateResidentHealthById(ResidentHealth residentHealth);

    /**
     * 根据居民id查询居民基础信息
     * @param id
     */
    Resident getResidentById(Integer id);

    /**
     * 居民添加家庭成员到居民表
     * @param resident
     */
    void saveResident(Resident resident);

    /**
     * 往家庭成员表中插入一条数据
     * @param memberFamily
     */
    void saveMemberFamily(MemberFamily memberFamily);

    /**
     * 根据默认和居民表id找出
     * @param currentId
     * @param setDefault
     */
    MemberFamily getMemberFamilyBySetDefault(@Param("currentId") Integer currentId, @Param("setDefault") Integer setDefault);

    /**
     * 根据id把默认字段修改为否
     * @param setDefault
     * @param id
     */
    void updateMemberFamilyById(@Param("id") Integer id,@Param("setDefault") Integer setDefault);

    /**
     * 后台新建完善的居民档案
     * @param resident
     */
    void saveResidentFiles(Resident resident);

    /**
     * 批量插入家庭成员
     * @param memberFamilyList
     */
    void saveListMemberFamily(@Param("memberFamilyList") List<MemberFamily> memberFamilyList);

    /**
     * 更新居民基础信息
     * @param resident
     */
    void updateResident(Resident resident);

    /**
     * 根据居民id更新居民健康信息
     * @param residentHealth
     */
    void updateResidentHealthByResidentId(ResidentHealth residentHealth);

    /**
     * 根据居民id删除家庭成员
     * @param id
     */
    void deleteMemberFamilyByResidentId(Integer id);
}
